package stack;
/**
 * P21 合并两个有序链表
 * */
public class P21 {
}

class P21Test01{
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if(list1==null){
            return list2;
        }
        if(list2==null){
            return list1;
        }

        if(list1.val<list2.val){
            list1.next=mergeTwoLists(list1.next, list2);
            return list1;
        }
        else{
            list2.next=mergeTwoLists(list1, list2.next);
            return list2;
        }
    }
}

class P21Test02{
        public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
            //定义第三个链表来链接
            ListNode head=new ListNode(-1);
            ListNode node=head;

            while(list1!=null&&list2!=null){
                if(list1.val>= list2.val){
                    node.next=list2;
                    list2=list2.next;
                }
                else{
                    node.next=list1;
                    list1=list1.next;
                }
                node=node.next;
            }
            if(list1!=null){
                node.next=list1;
                list1=list1.next;
                head=node.next;
            }
            if(list2!=null)
            {
                node.next=list2;
                list2=list2.next;
                head=node.next;
            }
            return head.next;
        }

}
